Page({
  data: {
    userInfo: {
      nickName: '',
      avatar: '',
    },
  },
  onLoad() {
    this.setData({
      userInfo: wx.getStorageSync('userInfo') || { nickName: '', avatar: '' },
    })
  },
  // 1. 选择昵称
  chooseNickName(ev) {
    // console.log(ev.detail)
    this.uploadNickName(ev.detail.value)
  },
  // 2. 调用接口上传昵称
  async uploadNickName(nickName) {
    const { code } = await wx.http.put('/userInfo', { nickName })
    if (code !== 10000) return wx.utils.toast('更新昵称失败')
    this.setData({
      'userInfo.nickName': nickName,
    })
  },
  // 3. 选择头像
  chooseUserAvatar(ev) {
    // console.log(ev.detail.avatarUrl)
    // 本地地址(临时地址)
    this.uploadUserAvatar(ev.detail.avatarUrl)
  },
  // 4. 上传头像
  uploadUserAvatar(avatarUrl) {
    // 4.1 loading动画
    wx.showLoading({
      title: '正在上传中...',
      mask: true,
    })
    // 4.2 开始上传
    wx.uploadFile({
      filePath: avatarUrl, // 要上传文件资源的路径 (本地路径)
      name: 'file', // 文件对应的 key
      url: wx.http.baseURL + '/upload', // 开发者服务器地址
      header: {
        // HTTP 请求 Header
        Authorization: getApp().token,
      },
      formData: {
        // 其他额外需要传递的数据
        type: 'avatar',
      },
      success: (res) => {
        // 1.1 把字符串转成对象
        const data = JSON.parse(res.data)
        // console.log(data)
        // 1.2 判断
        if (data.code !== 10000) return wx.utils.toast('上传头像失败')
        // 1.3 更新数据
        this.setData({
          'userInfo.avatar': data.data.url,
        })
      },
      fail: (error) => {
        console.log(error)
      },
      complete: () => {
        // 4.3 关闭加载动画
        wx.hideLoading()
      },
    })
  },
})
